from collections import OrderedDict

all_demos = OrderedDict([
    ("Fundamentals", OrderedDict([
        ('renderers', 'Displaying Figures'),
        ('creating-and-updating-figures', 'Creating and Updating Figures'),
        ('v4-migration', 'Version 4 Migration Guide'),
        ('plotly-express', 'Plotly Express'),
        ('static-image-export', 'Static Image Export'),
        ('templates', 'Theming and templates'),
        ('orca-management', 'Orca Management'),
        ('configuration-options', 'Configuration'),
        ('setting-graph-size', 'Setting Graph Size'),
        ('tick-formatting', 'Formatting Ticks'),
        ('figure-labels', 'Setting the Font, Title, Legend Entries, and Axis Titles'),
        ('axes', 'Axes'),
        ('legend', 'Legends'),
        ('multiple-axes', 'Multiple Axes'),
        ('subplots', 'Subplots'),
        ('graphing-multiple-chart-types', 'Multiple Chart Types'),
        ('px-arguments', 'Plotly Express Arguments'),
        ('marker-style', 'Styling Markers'),
        ('colorscales', 'Continuous Color Scales and Color Bars'),
        ('text-and-annotations', 'Text and Annotations'),
        ('hover-text-and-formatting', 'Hover Text and Formatting'),
        ('images', 'Images'),
        ('shapes', 'Shapes'),
        ('ipython-vs-python', 'IPython vs Python'),
        ('troubleshooting', 'Troubleshooting'),
        ('builtin-colorscales', 'Built-in Continuous Color Scales'),
        ('discrete-color', 'Discrete Colors'),
        ('styling-plotly-express', 'Styling Plotly Express Figures'),
        ('interactive-html-export', 'Interactive HTML Export'),
        ('cufflinks', 'Cufflinks')
    ])),
    ("Basic Charts", OrderedDict([
        # ('line-and-scatter', 'Scatter Plots'),
        ('line-charts', 'Line Charts'),
        ('bar-charts', 'Bar Charts'),
        ('pie-charts', 'Pie Charts'),
        ('bubble-charts', 'Bubble Charts'),
        ('dot-plots', 'Dot Plots'),
        ('filled-area-plots', 'Filled Area Plots'),
        ('horizontal-bar-charts', 'Horizontal Bar Charts'),
        ('gantt', 'Gantt Charts'),
        ('sunburst-charts', 'Sunburst Charts'),
        ('table', 'Tables'),
        ('sankey-diagram', 'Sankey Diagram'),
        ('treemaps', 'Treemap Charts'),
        # ('webgl-vs-svg', 'WebGL vs SVG')
    ])),
    ("Statistical Charts", OrderedDict([
        ('error-bars', 'Error Bars'),
        ('box-plots', 'Box Plots'),
        ('histograms', 'Histograms'),
        ('distplot', 'Distplots'),
        ('2D-Histogram', '2D Histograms'),
        ('splom', 'Scatterplot Matrix'),
        ('facet-plots', 'Facet and Trellis Plots'),
        ('parallel-categories-diagram', 'Parallel Categories Diagram'),
        ('tree-plots', 'Tree-plots'),
        ('violin', 'Violin Plots'),
        ('2d-histogram-contour', '2D Histogram Contour'),
        ('linear-fits', 'Linear and Non-Linear Trendlines')
    ])),
    ("Scientific Charts", OrderedDict([
        ('contour-plots', 'Contour Plots'),
        ('heatmaps', 'Heatmaps'),
        # ('imshow', 'Imshow'),
        ('ternary-plots', 'Ternary Plots'),
        ('log-plot', 'Log Plots'),
        ('dendrogram', 'Dendrograms'),
        ('annotated-heatmap', 'Annotated Heatmaps'),
        ('ternary-scatter-contour', 'Ternary Overlay'),
        ('parallel-coordinates-plot', 'Parallel Coordinates Plot'),
        ('quiver-plots', 'Quiver Plots'),
        ('streamline-plots', 'Streamline Plots'),
        ('network-graphs', 'Network Graphs'),
        ('carpet-plot', 'Carpet Plots'),
        ('carpet-contour', 'Carpet Contour Plot'),
        ('carpet-scatter', 'Carpet Scatter Plot'),
        ('polar-chart', 'Polar Charts'),
        ('radar-chart', 'Radar Charts'),
        ('ternary-contour', 'Ternary contours'),
        ('wind-rose-charts', 'Wind Rose and Polar Bar Charts'),
        ('datashader', 'Plotly and Datashader')
    ])),
    ("Financial Charts", OrderedDict([
        ('time-series', 'Time Series and Date Axes'),
        ('candlestick-charts', 'Candlestick Charts'),
        ('waterfall-charts', 'Waterfall Charts'),
        ('funnel-charts', 'Funnel Chart'),
        ('ohlc-charts', 'OHLC Charts'),
        ('indicator', 'Indicators'),
        ('gauge-charts', 'Gauge Charts'),
        ('bullet-charts', 'Bullet Charts')
    ])),
    ("Maps", OrderedDict([
        ('mapbox-county-choropleth', 'Mapbox Choropleth Maps'),
        ('lines-on-mapbox', 'Lines on Mapbox'),
        ('filled-area-on-mapbox', 'Filled Area on Maps'),
        ('bubble-maps', 'Bubble Maps'),
        ('mapbox-density-heatmaps', 'Mapbox Density Heatmap'),
        ('lines-on-maps', 'Lines on Maps'),
        ('choropleth-maps', 'Choropleth Maps'),
        ('mapbox-layers', 'Mapbox Map Layers'),
        ('scattermapbox', 'Scatter Plots on Mapbox'),
        ('county-choropleth', 'USA County Choropleth Maps'),
        ('scatter-plots-on-maps', 'Scatter Plots on Maps'),
        ('map-configuration', 'Map Configuration and Styling')
    ])),
    ("3D Charts", OrderedDict([
        ('3d-axes', '3D Axes'),
        ('3d-scatter-plots', '3D Scatter Plots'),
        ('3d-surface-plots', '3D Surface Plots'),
        ('3d-subplots', '3D Subplots'),
        ('3d-camera-controls', '3D Camera Controls'),
        ('3d-bubble-charts', '3D Bubble Charts'),
        ('3d-line-plots', '3D Line Plots'),
        ('3d-surface-coloring', '3D Surface Coloring'),
        ('3d-mesh', '3D Mesh Plots'),
        # ('3d-isosurface-plots', '3D Isosurface Plots'),
        # ('3d-volume', '3D Volume Plots'),
        ('cone-plot', '3D Cone Plots'),
        ('streamtube-plot', '3D Streamtube Plots')
    ])),
    ("Subplots", OrderedDict([
        ('mixed-subplots', 'Mixed Subplots'),
        ('map-subplots-and-small-multiples', 'Map Subplots'),
        ('table-subplots', 'Table and Chart Subplots'),
        ('figure-factory-subplots', 'Figure Factory Subplots')
    ])),
    ("Animations", OrderedDict([
        ('animations', 'Animations'),
        # ('visualizing-mri-volume-slices', 'Visualizing MRI Volume Slices'),
    ])),
])
# 以上注释掉的demo是因为build后的demo太大了

# 暂时不展示 Fundamentals demo
del all_demos['Fundamentals']
